Mapa de delitos

El último elemento que nos falta es el mapa de nuestro tablero de visualización. Para hacer el mapa vamos a usar el paquete {leaflet}, que es una interfase para la librería de Javascript de visualización geográfica Leaflet. Empezamos, como siempre, cargando los paquetes que vamos a usar

library(tidyverse)
library(sf)
library(leaflet)

Y leyendo los datos, de la misma forma que en el diagrama de dispersión:

base_mapa <- read_rds("01_input/Mapa_scatter_delitos_prioritarios.rds")
Encoding(base_mapa$subtipo_de_delito) <- "latin1"
Encoding(base_mapa$entidad) <- "latin1"
head(base_mapa)
fecha subtipo_de_delito clave_ent entidad Total CVEGEO NOMGEO geometry
2022-07-01 Robo a casa habitación 01 Aguascalientes 164 01 Aguascalientes MULTIPOLYGON (((-102.2879 2…
2022-07-01 Robo a casa habitación 02 Baja California 294 02 Baja California MULTIPOLYGON (((-112.3007 2…
2022-07-01 Robo a casa habitación 03 Baja California Sur 120 03 Baja California Sur MULTIPOLYGON (((-109.8945 2…
2022-07-01 Robo a casa habitación 04 Campeche 120 04 Campeche MULTIPOLYGON (((-91.9565 20…
2022-07-01 Robo a casa habitación 05 Coahuila de Zaragoza 140 05 Coahuila de Zaragoza MULTIPOLYGON (((-102.3108 2…
2022-07-01 Robo a casa habitación 06 Colima 123 06 Colima MULTIPOLYGON (((-114.7373 1…

Una vez más, tenemos que filtrar por tipo de delito y por fecha (recuerden que el tipo de delito lo va a determinar el usuario y la fecha la dejaremos fija)

mapa_leaflet <- base_mapa %>% 
  filter(fecha==max(fecha)) %>% 
  filter(subtipo_de_delito=="Homicidio doloso")
mapa_leaflet
fecha subtipo_de_delito clave_ent entidad Total CVEGEO NOMGEO geometry
2022-08-01 Homicidio doloso 01 Aguascalientes 11 01 Aguascalientes MULTIPOLYGON (((-102.2879 2…
2022-08-01 Homicidio doloso 02 Baja California 234 02 Baja California MULTIPOLYGON (((-112.3007 2…
2022-08-01 Homicidio doloso 03 Baja California Sur 3 03 Baja California Sur MULTIPOLYGON (((-109.8945 2…
2022-08-01 Homicidio doloso 04 Campeche 1 04 Campeche MULTIPOLYGON (((-91.9565 20…
2022-08-01 Homicidio doloso 05 Coahuila de Zaragoza 6 05 Coahuila de Zaragoza MULTIPOLYGON (((-102.3108 2…
2022-08-01 Homicidio doloso 06 Colima 75 06 Colima MULTIPOLYGON (((-114.7373 1…
2022-08-01 Homicidio doloso 07 Chiapas 32 07 Chiapas MULTIPOLYGON (((-91.97364 1…
2022-08-01 Homicidio doloso 08 Chihuahua 202 08 Chihuahua MULTIPOLYGON (((-107.6531 3…
2022-08-01 Homicidio doloso 09 Ciudad de México 79 09 Ciudad de México MULTIPOLYGON (((-99.11124 1…
2022-08-01 Homicidio doloso 10 Durango 14 10 Durango MULTIPOLYGON (((-105.9673 2…
2022-08-01 Homicidio doloso 11 Guanajuato 251 11 Guanajuato MULTIPOLYGON (((-101.35 21….
2022-08-01 Homicidio doloso 12 Guerrero 92 12 Guerrero MULTIPOLYGON (((-99.9061 16…
2022-08-01 Homicidio doloso 13 Hidalgo 17 13 Hidalgo MULTIPOLYGON (((-98.48321 2…
2022-08-01 Homicidio doloso 14 Jalisco 175 14 Jalisco MULTIPOLYGON (((-104.8145 1…
2022-08-01 Homicidio doloso 15 México 221 15 México MULTIPOLYGON (((-99.91237 2…
2022-08-01 Homicidio doloso 16 Michoacán de Ocampo 180 16 Michoacán de Ocampo MULTIPOLYGON (((-102.0101 2…
2022-08-01 Homicidio doloso 17 Morelos 88 17 Morelos MULTIPOLYGON (((-99.06209 1…
2022-08-01 Homicidio doloso 18 Nayarit 9 18 Nayarit MULTIPOLYGON (((-105.2742 2…
2022-08-01 Homicidio doloso 19 Nuevo León 155 19 Nuevo León MULTIPOLYGON (((-100.0161 2…
2022-08-01 Homicidio doloso 20 Oaxaca 115 20 Oaxaca MULTIPOLYGON (((-96.08409 1…
2022-08-01 Homicidio doloso 21 Puebla 90 21 Puebla MULTIPOLYGON (((-97.84218 2…
2022-08-01 Homicidio doloso 22 Querétaro 11 22 Querétaro MULTIPOLYGON (((-99.18811 2…
2022-08-01 Homicidio doloso 23 Quintana Roo 55 23 Quintana Roo MULTIPOLYGON (((-87.38975 1…
2022-08-01 Homicidio doloso 24 San Luis Potosí 51 24 San Luis Potosí MULTIPOLYGON (((-100.6035 2…
2022-08-01 Homicidio doloso 25 Sinaloa 33 25 Sinaloa MULTIPOLYGON (((-106.4129 2…
2022-08-01 Homicidio doloso 26 Sonora 131 26 Sonora MULTIPOLYGON (((-110.9509 2…
2022-08-01 Homicidio doloso 27 Tabasco 27 27 Tabasco MULTIPOLYGON (((-92.45106 1…
2022-08-01 Homicidio doloso 28 Tamaulipas 51 28 Tamaulipas MULTIPOLYGON (((-99.71772 2…
2022-08-01 Homicidio doloso 29 Tlaxcala 12 29 Tlaxcala MULTIPOLYGON (((-98.05499 1…
2022-08-01 Homicidio doloso 30 Veracruz de Ignacio de la Llave 98 30 Veracruz de Ignacio de la Llave MULTIPOLYGON (((-96.09229 1…
2022-08-01 Homicidio doloso 31 Yucatán 4 31 Yucatán MULTIPOLYGON (((-92.2241 20…
2022-08-01 Homicidio doloso 32 Zacatecas 101 32 Zacatecas MULTIPOLYGON (((-101.8488 2…

Ahora, para poder crear un mapa de coropletas, en el que los colores representen la cantidad de delitos, necesitamos una paleta de colores:

pal <- colorNumeric("inferno",mapa_leaflet$Total,reverse = T,na.color = NA)

Ya con esto, crtear un mapa interactivo es muy fácil:

leaflet() %>% 
  addProviderTiles(providers$OpenStreetMap) %>% 
  addPolygons(data=mapa_leaflet$geometry,
              fillColor = pal(mapa_leaflet$Total),
              color="black",
              weight = 1,
              opacity = 1,
              fillOpacity = .7,
              label = mapa_leaflet$NOMGEO,
              group = "Entidades")%>% 
  addLegend(pal = pal,values = mapa_leaflet$Total) %>% 
  addLayersControl(overlayGroups = "Entidades")